package cn.shenlong.portal.service.impl;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.RowBounds;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.shenlong.common.Page;
import cn.shenlong.portal.domain.Store2tag;
import cn.shenlong.portal.domain.Storetag;
import cn.shenlong.portal.mapper.Store2tagMapper;
import cn.shenlong.portal.mapper.StoretagMapper;
import cn.shenlong.portal.service.StoretagService;


@Service("storetagService")
public class StoretagServiceImpl implements StoretagService {

	@Autowired
	private StoretagMapper storetagmapper;

	@Autowired
	private Store2tagMapper store2tagmapper;
	
	@SuppressWarnings("rawtypes")
	private RowBounds initRowBounds(Integer pageSize, Integer pageNo, Page p) {
		RowBounds rowBounds = null;
		if (pageSize == null || pageNo == null) {
			rowBounds = new RowBounds();
		} else {
			p.setPageNo(pageNo);
			p.setPageSize(pageSize);
			rowBounds = new RowBounds(p.getFirstResult(), p.getPageSize());
		}
		return rowBounds;
	}



	
	
	@Override
	public Page<Storetag> findForStoretag(Map<String, Object> otherParm,
			Integer pageNo, Integer pageSize) {
		Page<Storetag> p = new Page<Storetag>();
 
		List<Storetag> storetagList = storetagmapper.findPageListByCriteria(
				otherParm,
				initRowBounds(pageSize, pageNo, p));
		Long count = storetagmapper.findCountByCriteria( otherParm);
		p.setList(storetagList);
		p.setTotalCount(count.intValue());
		return p;
	}

	@Override
	public Storetag findStoretagById(Integer id) {
		return storetagmapper.findByPK(id);
 
	}

	@Override
	public void saveStoretag(Storetag storetag) {
		storetagmapper.saveEntity(storetag);

	}

	@Override
	public void updateStoretag(Storetag storetag) {
		storetagmapper.updateEntity(storetag);

	}

	@Override
	public void deleteStoretag(Integer[] id) {
		for (int i = 0; i < id.length; i++) {
			store2tagmapper.deleteByTagId(id[i]);
		}
		storetagmapper.deleteByPKArray(id);

	}





	@Override
	public List<Store2tag> findStore2tagByStoreId(Integer StoreId) {
		return store2tagmapper.findByStoreId(StoreId);
 
	}





	@Override
	public void updateStoretags(Integer[] storetagId, Integer storeId) {
		if(storetagId ==null||storeId==null){
			return;
		}
		
		store2tagmapper.deleteByStoreId(storeId);
		for (int i = 0; i < storetagId.length; i++) {
			Store2tag store2tag = new Store2tag();
			store2tag.setStroreId(storeId);
			store2tag.setTagId(storetagId[i]);
			store2tagmapper.saveEntity(store2tag);
		}
		
 
		
	}





	@Override
	@Transactional
	public void deleteStore2TagByStoreId(Integer[] ids) {
		if(ids!=null && ids.length>0){
			for (Integer id : ids) {
				store2tagmapper.deleteByStoreId(id);
			}
		}
	}





	@Override
	public int saveStoreTag2(Store2tag tag2) {
		store2tagmapper.saveEntity(tag2);
		return 0;
	}

}
